Análisis Numérico

Ingeniería de software y computación

Ph.D. Pablo Eduardo Caicedo Rodríguez

2023-08-01

Análisis Numérico

El Profesor

Educación

Doctor en Ciencias de la Electrónica. Magíster en Ingeniería Electrónica y Telecomunicaciones Ingeniero en Electrónica y Telecomunicaciones

Intereses

Biomecánica, Dispositivos para el análisis de movimiento humano, ciencia de los datos.

Desempeño

Profesor de la Facultad de Ingeniería

Invest. Línea de Percep. Avanz. y Robótica – GITA

Director Grupo de Investigación MEDES.

Director del laboratorio de datos de la Uniautonoma.

Contacto:

pablo.caicedo.r@uniautonoma.edu.co

Contenido del curso

  1. Introducción al análisis numérico
  2. Solución de ecuaciones
  3. Interpolación y aproximaciones lineales
  4. Diferenciación e integración numérica
  5. Problemas de valor inicial para solución de ecuaciones diferenciales ordinarias

Evaluación

  1. Comprensión de lectura (Inglés) (10%)
  2. Consigna 001. Solución de ecuaciones - Interpolación y aproximaciones lineales (25%)
  3. Consigna 002. Diferenciación e integración numérica (25%)
  4. Consigna 003. Proyecto Final (40%)

Recursos

Clases

Lunes, Martes, Miércoles y Jueves 9:00 – 11:00 Sala 504

Sala de teams

Software

Interpretes: Python, R, Latex(TEXLive), Anaconda.

IDE: Visual Studio Code, Google Colaboratory (R, Python)

Librerías Numpy.

Seguimiento de Aprendizaje: Moodle

Bibliografía

  1. Angarita, A. (2013). Apuntes De Análisis Numérico. Departamento de Ciencias Básicas - Unidades Tecnológicas de Santander.
  2. Burden, R. L., Faires, J. D., & Burden, A. M. (2016). Análisis Numérico (Tenth edition). Cengage Learning.
  3. Chapra, S. C., Canale, R. P., & Del Valle Sotelo, J. C. (2008). Métodos numéricos para ingenieros (5a ed). McGraw-Hill.
  4. Arévalo Ovalle, D., Bernal Yermanos, M. Á., & Posada Restrepo, J. A. (2021). Métodos numéricos con Python. Editorial Politécnico Grancolombiano.
  5. Corriou, J.-P. (2021). Numerical Methods and Optimization: Theory and Practice for Engineers (Vol. 187). Springer International Publishing. https://doi.org/10.1007/978-3-030-89366-8
  6. Gilat, A., & Subramaniam, V. (2014). Numerical methods for engineers and scientists: An introduction with applications using matlab (Third edition). John Wiley & Sons, Inc.
  7. Miles, W. (2023). Numerical Methods with Python: For the sciences (1st ed.). De Gruyter.

Introducción al análisis numérico

Errores y aproximaciones

Las cantidades que se trabajan en la ingeniería tienen dos orígenes diferentes:

  • Mediciones sobre procesos físicos
  • Resultados de procesos matemáticos.

Primer Origen

Un proceso de medición nunca arroja el valor verdadero de la medida, pues las mediciones se hacen con instrumentos que se encuentran limitados

Segundo Origen

Las operaciones aritméticas usualmente se ejecutan en un computador o una calculadora, y la limitación de espacio de estos dispositivos lleva a que algunas cifras no se puedan representar correctamente.

Errores y aproximaciones

Importante

Los errores debido a estos orígenes es de naturaleza acumulativa, por ejemplo si se operan medidas reales con un procesador limitado la incertidumbre aumentará.

Importante

Muchas veces resulta imposible siquiera expresar en términos algebraicos soluciones a ciertas ecuaciones, inclusive polinomiales.

Siempre…

Con lo anterior, es claro que el trabajo de ingeniería y ciencias se encuentra inevitablemente sujeto a error, y por tanto el tema de cuantificación de errores es de atención prioritaria en dichas áreas.

Errores y aproximaciones

Error Absoluto

\[\varepsilon = \left| x - \bar{x} \right|\]

Error relativo

\[\varepsilon_{\gamma} = \frac{\left| x - \bar{x} \right|}{\left| x \right|}\]

Error de aproximación

\[\varepsilon_{ap} = {\left| x_{actual} - x_{anterior} \right|}\]

Cifras significativas

Cifras significativas

Considere…

Una región rectangular que tiene 20.5 cm de largo por 14.3 cm de ancho. Se requiere la medida del área de la región en centímetros cuadrados.

  • Diferentes personas reportarían sin dudar los primeros dos dígitos, a saber el dos y el cero, que en este contexto se llamarán dígitos confiables.

  • Se entenderá que esta medida en realidad es una cifra entre 20.5 cm y 20.6 cm con el tercer dígito llamado dígito de incertidumbre.

  • La cantidad de dígitos confiables más otro con incertidumbre, son las cifras significativas de una medición.

Cifras significativas

¿Que pasa con las operaciones?

Cuando se operen números con cifras significativas, el resultado tendrá tantas cifras significativas como el factor con menos cifras significativas.

Hablando de errores

Con el número de cifras significativas \(\left(n\right)\), se puede calcular la cota del error absoluto:

\[\varepsilon = \left( 0.5\times10^{2-n} \right) \%\]

Que pasa en los computadores?

\[\left(-1\right)^{s}2^{c-1023}\left(1+f\right)\]

Ejemplos de conversión de IEEE 754 a decimal

Dos numeros “diferentes”

  1. 0 10000000011 1011100100010000000000000000000000000000000000000000
  2. 0 10000000011 1011100100010000000000000000000000000000000000000001

El bit más izquierdo en ambos casos es “0”, por lo tanto en los dos casos los numéros son positivos.

Ejemplos de conversión de IEEE 754 a decimal

Dos numeros “diferentes”

  1. 0 10000000011 1011100100010000000000000000000000000000000000000000
  2. 0 10000000011 1011100100010000000000000000000000000000000000000001

En el ambos casos el exponente es 10000000011 por lo tanto el valor c se calcula así:

\[ c = 1 \cdot 2^{10} + 0 \cdot 2^{9} + \dots +1 \cdot 2^{1} + 1 \cdot 2^{0} = 1024+2+1=1027\]

Ejemplos de conversión de IEEE 754 a decimal

Dos numeros “diferentes”

  1. 0 10000000011 1011100100010000000000000000000000000000000000000000
  2. 0 10000000011 1011100100010000000000000000000000000000000000000001

La mantisa para el primer caso es:

\[1011100100010000000000000000000000000000000000000000\] \[ f = 1 \cdot 2^{-1} + 1 \cdot 2^{-3} + 1\cdot 2^{-4} +1 \cdot 2^{-5} + 1 \cdot 2^{-8} + 1 \cdot 2^{-12} \] \[ f = 0.5 + 0.125 + 0.0625 + 0.03125 + 0.00390625 + 0.000244140625\] \[ f= 0.7229003906250000000000\]

Ejemplos de conversión de IEEE 754 a decimal

Dos numeros “diferentes”

  1. 0 10000000011 1011100100010000000000000000000000000000000000000000
  2. 0 10000000011 1011100100010000000000000000000000000000000000000001

La mantisa para el segundo caso es:

\[1011100100010000000000000000000000000000000000000001\] \[ f = 1 \cdot 2^{-1} + 1 \cdot 2^{-3} + 1\cdot 2^{-4} +1 \cdot 2^{-5} + 1 \cdot 2^{-8} + 1 \cdot 2^{-12} + 1 \cdot 2^{-52}\] \[ f = 0.5 + 0.125 + 0.0625 + 0.03125 + 0.00390625 + 0.000244140625 + 2,220476049250313e-16\] \[f = 0.7229003906250002220446\]

Error de truncamiento

Importante

Dentro de los números reales \(\left( \mathbb{R} \right)\), existen dos conjuntos de números claramente diferenciables, los racionales \(\left( \mathbb{Q} \right)\) y los irracionales \(\left( \mathbb{I} \right)\). Los primeros son facilmente representables en un sistema computacional; sin embargo los segundo debido a que no pueden ser representados con un número finito de digitos deben ser cortados a unas cuantas cifras.

Nota

Sin embargo, hay formas metódicas de obtener aproximaciones tan buenas como se quieran a estos números. Como por ejemplo las conocidas series de Taylor

\[f\left( x \right) = f\left( c \right) + \dot{f}\left( c \right)\left( x-c \right) + \frac{\ddot{f}\left( c \right)}{2!}\left( x-c \right)^2 + \frac{\dddot{f}\left( c \right)}{3!}\left( x-c \right)^3 + \dots + \frac{f^{\left(n\right)}\left( c \right)}{n!}\left( x-c \right)^n\]

  • Todas las derivadas deben existir.
  • Función y derivadas en el intervalo \(\left(x,c\right)\)

Error de truncamiento

Forma de Langrange

\[R_n\left( x \right) = \frac{f^{\left( n+1 \right)}\left( \xi \right)}{\left( n+1 \right)!}\left( x-c \right)^{n+1}\]

Forma Integral

\[R_n\left( x \right) = \int_{c}^{x}{\frac{f^{\left(n+1\right)}\left(t\right)}{n!}\left(x-t\right)^{n}dt}\]

Ejemplo de Error de truncamiento

Recordemos

\[f\left( x \right) = f\left( c \right) + \dot{f}\left( c \right)\left( x-c \right) + \frac{\ddot{f}\left( c \right)}{2!}\left( x-c \right)^2 + \frac{\dddot{f}\left( c \right)}{3!}\left( x-c \right)^3 + \dots + \frac{f^{\left(n\right)}\left( c \right)}{n!}\left( x-c \right)^n\]

Calcular ln(1.1), centrado en c=1, y orden 4

\[f\left(x\right)=ln\left(x\right)\]

\[\dot{f}\left(x\right) = \frac{1}{x}\]

\[\ddot{f}\left(x\right) = -\frac{1}{x^2}\]

\[\dddot{f}\left(x\right) = \frac{2}{x^3}\]

\[\ddddot{f}\left(x\right) = -\frac{6}{x^4}\]

Ejemplo de Error de truncamiento

Calcular ln(1.1), centrado en c=1, y orden 4

\[f\left(1.1\right)=ln\left(1\right)+\frac{1}{1.1}\left(1.1 - 1\right)-\frac{1}{2\cdot 1.1^2}\left(1.1-1\right)^2+\frac{2}{6\cdot 1.1^3}\left(1.1 - 1\right)^3 - \frac{6}{24\cdot 1.1^4}\left(1.1 - 1\right)^4\]

def taylor_expansion_ln(x):
    return ((1/x)*(x-1))-((1/(2*(x**2)))*(x-1)**2)+ ((2/(6*(x**3)))*(x-1)**3)-((6/(24*(x**4)))*(x-1)**4)
print(taylor_expansion_ln(1.1))
0.08701022243471537

Ejemplo de Error de truncamiento

Calcular ln(1.1), centrado en c=1, y orden 4

\[f\left(1.1\right)=ln\left(1\right)+\frac{1}{1}\left(1.1 - 1\right)-\frac{1}{2\cdot 1^2}\left(1.1-1\right)^2+\frac{2}{6\cdot 1^3}\left(1.1 - 1\right)^3 - \frac{6}{24\cdot 1^4}\left(1.1 - 1\right)^4\]

def taylor_expansion_ln(x):
    return ((1/1)*(x-1))-((1/(2*(1**2)))*(x-1)**2)+ ((2/(6*(1**3)))*(x-1)**3)-((6/(24*(1**4)))*(x-1)**4)
print(taylor_expansion_ln(1.1))
0.09530833333333343

Ejemplo de Error de truncamiento

Recordemos

\[R_n\left( x \right) = \frac{f^{\left( n+1 \right)}\left( \xi \right)}{\left( n+1 \right)!}\left( x-c \right)^{n+1}\]

Error en forma de lagrange

\[R_4\left(1.1\right) = \frac{24\xi^{-5}}{5!}\left(1.1 - 1\right)^{5}\]

def error_taylor_expansion(x):
    return ((24*x**(-5))/120)*(0.1**5)

Ejemplo de Error de truncamiento

import numpy as np
import matplotlib.pyplot as plt

v = np.arange(1,1.1,0.0001)
error = error_taylor_expansion(v)
fig, ax = plt.subplots()
ax.plot(v,error)
ax.set_xlabel("Valor")
ax.set_ylabel("Error de truncamiento")
plt.show()

Ejemplo de Error de truncamiento

Calcular ln(1.1), centrado en c=1, y orden 4

\[f\left(1.1\right)=ln\left(1\right)+\frac{1}{1}\left(1.1 - 1\right)-\frac{1}{2\cdot 1^2}\left(1.1-1\right)^2+\frac{2}{6\cdot 1^3}\left(1.1 - 1\right)^3 - \frac{6}{24\cdot 1^4}\left(1.1 - 1\right)^4\]

def taylor_expansion_ln(x):
    return ((1/1)*(x-1))-((1/(2*(1**2)))*(x-1)**2)+ ((2/(6*(1**3)))*(x-1)**3)-((6/(24*(1**4)))*(x-1)**4)
print(taylor_expansion_ln(1.1))
0.09530833333333343